Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Update regenie to 3.6 #50468

Merged
merged 16 commits into from
Oct 28, 2024
Merged

Update regenie to 3.6 #50468

merged 16 commits into from
Oct 28, 2024

Conversation

BiocondaBot
Copy link
Collaborator

Update regenie: 3.53.6

install with bioconda Conda

Info Link or Description
Recipe recipes/regenie (click to view/edit other files)
Summary Regenie is a C++ program for whole genome regression modelling of large genome-wide association studies (GWAS).
Home https://rgcgithub.github.io/regenie/
Releases https://github.com/rgcgithub/regenie/tags
Recipe Maintainer(s) @matuskosut, @joellembatchou
Author @rgcgithub

This pull request was automatically generated (see docs).

@BiocondaBot BiocondaBot added autobump Automatic Version Update new version labels Sep 3, 2024
Copy link
Contributor

coderabbitai bot commented Oct 9, 2024

📝 Walkthrough
📝 Walkthrough

Walkthrough

This pull request introduces updates to the regenie package, specifically modifying the meta.yaml and a corresponding patch file. The meta.yaml file's version has been incremented from "3.5" to "3.6", and the SHA256 checksum has been updated from "48dfe8efa7b8acb6771452e3b53008f97d4a5c1241d5dbc3380d994b70a07a8c" to "bb935b196da08ef7b37dad9736022030a686ae84539c47c106de6096d4612e09". Additionally, the patch for version 3.5 has been commented out, and a new patch for version 3.6 has been added.

The patch file modifies the CMakeLists.txt for the REGENIE project, updating checks for library paths and compilation options. It introduces new library dependencies and adjusts the handling of Boost libraries, shifting from private to public linking for several libraries. The configuration process has been streamlined, and new methods for versioning and packaging have been added. Overall, these changes enhance the configuration and build process for the REGENIE project.

Possibly related PRs

  • Update gget to 0.29.0 #50960: The meta.yaml file for the gget package was updated with a new version and SHA256 checksum, similar to the changes made in the regenie package's meta.yaml.
  • Update architeuthis to 0.3.1 #50970: The meta.yaml file for the architeuthis package was updated with a new version and SHA256 checksum, reflecting a similar update process as seen in the regenie package.
  • Update genmod to 3.8.3 #51069: The meta.yaml file for the genmod package was updated with a new version and SHA256 checksum, paralleling the versioning and checksum updates in the regenie package.
  • upd orthologer to 3.4.2 #51128: The meta.yaml file for the orthologer package was updated with a new version and SHA256 checksum, akin to the changes in the regenie package's meta.yaml.
  • Update protgraph to 0.3.11 #51164: The meta.yaml file for the protgraph package was updated with a new version and SHA256 checksum, similar to the updates made in the regenie package.
  • Update genomad to 1.8.1 #51179: The meta.yaml file for the genomad package was updated with a new version and SHA256 checksum, reflecting the same type of changes as in the regenie package.

Thank you for using CodeRabbit. We offer it for free to the OSS community and would appreciate your support in helping us grow. If you find it useful, would you consider giving us a shout-out on your favorite social media?

❤️ Share
🪧 Tips

Chat

There are 3 ways to chat with CodeRabbit:

  • Review comments: Directly reply to a review comment made by CodeRabbit. Example:
    • I pushed a fix in commit <commit_id>, please review it.
    • Generate unit testing code for this file.
    • Open a follow-up GitHub issue for this discussion.
  • Files and specific lines of code (under the "Files changed" tab): Tag @coderabbitai in a new review comment at the desired location with your query. Examples:
    • @coderabbitai generate unit testing code for this file.
    • @coderabbitai modularize this function.
  • PR comments: Tag @coderabbitai in a new PR comment to ask questions about the PR branch. For the best results, please provide a very specific query, as very limited context is provided in this mode. Examples:
    • @coderabbitai gather interesting stats about this repository and render them as a table. Additionally, render a pie chart showing the language distribution in the codebase.
    • @coderabbitai read src/utils.ts and generate unit testing code.
    • @coderabbitai read the files in the src/scheduler package and generate a class diagram using mermaid and a README in the markdown format.
    • @coderabbitai help me debug CodeRabbit configuration file.

Note: Be mindful of the bot's finite context window. It's strongly recommended to break down tasks such as reading entire modules into smaller chunks. For a focused discussion, use review comments to chat about specific files and their changes, instead of using the PR comments.

CodeRabbit Commands (Invoked using PR comments)

  • @coderabbitai pause to pause the reviews on a PR.
  • @coderabbitai resume to resume the paused reviews.
  • @coderabbitai review to trigger an incremental review. This is useful when automatic reviews are disabled for the repository.
  • @coderabbitai full review to do a full review from scratch and review all the files again.
  • @coderabbitai summary to regenerate the summary of the PR.
  • @coderabbitai resolve resolve all the CodeRabbit review comments.
  • @coderabbitai configuration to show the current CodeRabbit configuration for the repository.
  • @coderabbitai help to get help.

Other keywords and placeholders

  • Add @coderabbitai ignore anywhere in the PR description to prevent this PR from being reviewed.
  • Add @coderabbitai summary to generate the high-level summary at a specific location in the PR description.
  • Add @coderabbitai anywhere in the PR title to generate the title automatically.

CodeRabbit Configuration File (.coderabbit.yaml)

  • You can programmatically configure CodeRabbit by adding a .coderabbit.yaml file to the root of your repository.
  • Please see the configuration documentation for more information.
  • If your editor has YAML language server enabled, you can add the path at the top of this file to enable auto-completion and validation: # yaml-language-server: $schema=https://coderabbit.ai/integrations/schema.v2.json

Documentation and Community

  • Visit our Documentation for detailed information on how to use CodeRabbit.
  • Join our Discord Community to get help, request features, and share feedback.
  • Follow us on X/Twitter for updates and announcements.

Copy link
Contributor

@coderabbitai coderabbitai bot left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Actionable comments posted: 4

🧹 Outside diff range and nitpick comments (1)
recipes/regenie/patches/0015-update-cmakelist.txt-for-v3.6.patch (1)

15-21: Consider retaining build instructions for users

The removal of the comments explaining how to set environment variables like MKLROOT, OPENBLAS_ROOT, and STATIC may make it harder for users to configure the build environment, especially if they are not familiar with the build process. These instructions are valuable for guiding users through custom build configurations.

Consider keeping these comments or relocating them to documentation (e.g., README or INSTALL files) to assist users in setting up the build environment correctly.

📜 Review details

Configuration used: CodeRabbit UI
Review profile: CHILL

📥 Commits

Files that changed from the base of the PR and between 3d279af and 977ab90.

📒 Files selected for processing (2)
  • recipes/regenie/meta.yaml (2 hunks)
  • recipes/regenie/patches/0015-update-cmakelist.txt-for-v3.6.patch (1 hunks)
🧰 Additional context used
🔇 Additional comments (9)
recipes/regenie/meta.yaml (3)

2-2: Version update looks good.

The version has been correctly updated from 3.5 to 3.6, which aligns with the PR objectives.


Line range hint 30-85: Verify dependencies and test commands for the new version.

The build number is correctly set to 0 for the new version. The requirements, test commands, and other metadata remain unchanged. While this is often appropriate for minor version updates, it's worth verifying that:

  1. All dependencies are still compatible with version 3.6.
  2. The test commands are still valid and sufficient for version 3.6.
  3. There are no new features or changes in v3.6 that require updates to the metadata, such as new license files or documentation links.

To assist with this verification, you could:

  1. Check the release notes for regenie v3.6 for any changes that might affect the conda recipe.
  2. Run the package build and test process in a conda environment to ensure everything works as expected with the new version.

27-28: Verify the new patch file.

The patch file has been correctly updated for the new version. The old patch for v3.5 is commented out, and a new patch for v3.6 is added. However, we should ensure that the new patch file exists and is correctly referenced.

To verify the existence and correct referencing of the new patch file, you can run the following script:

#!/bin/bash
# Description: Verify the existence and correct referencing of the new patch file.

# Check if the new patch file exists
if [ -f "patches/0015-update-cmakelist.txt-for-v3.6.patch" ]; then
    echo "New patch file exists."
else
    echo "Error: New patch file does not exist."
fi

# Check if the old patch file is correctly commented out in meta.yaml
if grep -q "# - patches/0014-update-cmakelist.txt-for-v3.5.patch" meta.yaml; then
    echo "Old patch file is correctly commented out."
else
    echo "Error: Old patch file is not correctly commented out."
fi

# Check if the new patch file is correctly referenced in meta.yaml
if grep -q "- patches/0015-update-cmakelist.txt-for-v3.6.patch" meta.yaml; then
    echo "New patch file is correctly referenced."
else
    echo "Error: New patch file is not correctly referenced."
fi
recipes/regenie/patches/0015-update-cmakelist.txt-for-v3.6.patch (6)

112-113: Addition of OpenMP support

The inclusion of OpenMP enhances the application's performance by enabling parallel processing. The find_package and target_link_libraries commands are correctly implemented to include OpenMP support.


336-338: Confirm the necessity of the OPTIONAL flag in the install command

The install command for the regenie target now includes the OPTIONAL flag. This means if the regenie executable is not built, the installation process will not report an error. Verify whether it is acceptable for the build process to proceed without installing regenie, or if the regenie target should always be present after a successful build.

If regenie is expected to be always built and installed, removing the OPTIONAL flag may help catch build issues earlier.


317-321: Update to find_library for ZLIB_LIBRARY

The search for the Zlib library has been simplified from:

find_library(ZLIB_LIBRARY libz.a z REQUIRED)

to:

find_library(ZLIB_LIBRARY z REQUIRED)

This change is appropriate as it relies on the standard library name z, allowing CMake to find the correct library without specifying the static archive libz.a.


346-352: Integration of versioning and packaging

The addition of write_basic_package_version_file and the inclusion of CPack enhance the project's version management and distribution capabilities. This facilitates easier packaging and installation of the software.


275-279: Ensure consistent linking of MKL libraries across platforms

The handling of MKL library linking differs between Linux and Darwin platforms. On Linux, if BUILD_STATIC is true, the link options include "-Wl,--start-group" and "-Wl,--end-group" with -lgomp, while on Darwin, these options are omitted.

Ensure that the MKL libraries are correctly linked on all supported platforms and that the differences in linker options are intentional and necessary.

If you need assistance in verifying the correct linker flags for MKL on different platforms, I can help generate the appropriate CMake configurations.


30-84: ⚠️ Potential issue

Verify the removal of environment variable checks for external libraries

The code removes checks for environment variables such as BGEN_PATH, MKLROOT, HTSLIB_PATH, and OPENBLAS_ROOT, which were previously used to specify custom paths to external libraries. Ensure that the build system can locate these libraries without the need for explicit environment variables and that users still have a way to provide custom paths if necessary.

To confirm the build system correctly locates the required libraries, and users can specify custom paths if needed, consider reviewing the updated documentation or build scripts.

{% set version = "3.5" %}
{% set sha256 = "48dfe8efa7b8acb6771452e3b53008f97d4a5c1241d5dbc3380d994b70a07a8c" %}
{% set version = "3.6" %}
{% set sha256 = "bb935b196da08ef7b37dad9736022030a686ae84539c47c106de6096d4612e09" %}
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Codebase verification

SHA256 checksum verification failed.

The checksum could not be verified due to missing or incorrectly referenced patch files and the absence of the meta.yaml file. Please ensure that all patch files are present and correctly referenced, and that meta.yaml exists in the repository.

🔗 Analysis chain

Verify the SHA256 checksum.

The SHA256 checksum has been updated, which is expected for a new version. However, it's crucial to ensure that this new checksum is correct for version 3.6 of regenie.

To verify the checksum, you can run the following script:

🏁 Scripts executed

The following scripts were executed for the analysis:

Script:

#!/bin/bash
# Description: Verify the SHA256 checksum of the regenie v3.6 source tarball.

# Download the source tarball
curl -L https://github.com/rgcgithub/regenie/archive/v3.6.tar.gz -o regenie-3.6.tar.gz

# Calculate the SHA256 checksum
calculated_checksum=$(sha256sum regenie-3.6.tar.gz | awk '{print $1}')

# Compare with the checksum in the recipe
expected_checksum="bb935b196da08ef7b37dad9736022030a686ae84539c47c106de6096d4612e09"

if [ "$calculated_checksum" = "$expected_checksum" ]; then
    echo "Checksum verification passed."
else
    echo "Checksum verification failed."
    echo "Expected: $expected_checksum"
    echo "Calculated: $calculated_checksum"
fi

# Clean up
rm regenie-3.6.tar.gz

Length of output: 676

Comment on lines +42 to +48
+if(BUILD_SHARED_LIBS)
+ set(BUILD_STATIC OFF CACHE INTERNAL "Dynamic compilation")
+ set(Boost_USE_STATIC_LIBS OFF)
+else()
set(BUILD_STATIC ON CACHE INTERNAL "Static compilation")
+ set(Boost_USE_STATIC_LIBS ON)
message( STATUS "Static compilation mode")
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Ensure correct logic for build type determination

The condition for setting BUILD_STATIC has been changed from checking the environment variable STATIC to BUILD_SHARED_LIBS. This modifies how the build system determines whether to perform a static or dynamic build. Ensure that BUILD_SHARED_LIBS is properly defined in all build configurations and that this change does not unintentionally alter the build behavior.

Consider setting a default value for BUILD_SHARED_LIBS or adjusting the logic to handle cases where it might be undefined.

Comment on lines +107 to +108
+target_include_directories(regenie PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}/src ${CMAKE_PREFIX_PATH}/include)

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🛠️ Refactor suggestion

Assess the impact of changing visibility from PRIVATE to PUBLIC

The visibility of include directories and linked libraries in target_include_directories and target_link_libraries has been changed from PRIVATE to PUBLIC. This change exposes internal headers and libraries to any project that links against regenie, which may not be intended if regenie is not designed to be used as a library.

If exposing these directories and libraries is not necessary, consider retaining PRIVATE visibility to encapsulate internal dependencies and prevent potential linkage issues in downstream projects.

Also applies to: 129-130, 207-207, 216-216, 225-225, 233-233, 242-242, 260-260, 268-268, 297-297, 305-305

Comment on lines +220 to +221
-if(EXISTS ${MKLROOT})
+if(DEFINED MKLROOT)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚠️ Potential issue

Validate the change from EXISTS to DEFINED for MKLROOT

The condition checking for MKLROOT has been changed from if(EXISTS ${MKLROOT}) to if(DEFINED MKLROOT). This alters the behavior from verifying whether the MKLROOT directory exists to merely checking if the variable is defined. Ensure that this change does not lead to issues when MKLROOT is defined but points to a non-existent directory.

Consider combining both checks:

if(DEFINED MKLROOT AND EXISTS ${MKLROOT})

This ensures that MKLROOT is both defined and points to a valid directory.

@mencian mencian merged commit 65adb89 into master Oct 28, 2024
6 checks passed
@mencian mencian deleted the bump/regenie branch October 28, 2024 22:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
autobump Automatic Version Update new version
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants